/***************************************************************************

								可变参数函数
1. C语言没有重载!
2. 参数可变函数实现依赖于 stdarg.h  ;
3. va_list变量与va_start, va_end, va_arg配合使用可访问参数值.



可变参数的限制:
1. 可变参数必须从头到尾按照顺序逐个访问;
2. 参数列表中至少要存在一个确定的命名参数;
3. 可变参数宏无法判断实际存在的参数的数量;
4. 可变参数宏无法判断参数的实际类型;


*****************************************************************************/


#include <stdio.h>
#include <stdarg.h>

float average(int n, ...)//求平均数的可变参数函数
{
    va_list args;
    int i = 0;
    float sum = 0;
    
    va_start(args, n); 
    for(i=0; i<n; i++){
        sum += va_arg(args, int);
    } 
    va_end(args);
    
    return sum / n;
}

int main(){
    printf("%f\n", average(5, 1, 2, 3, 4, 5));
    printf("%f\n", average(4, 1, 2, 3, 4)); 
    return 0;
}

